

import java.io.*;
import java.util.*;

/**
* 多个txt文件合并程序  - Java I/O
* @author Jade ZHANG || pioneer_zcy@163.com
* @version 1.1 UpdateTime: 2016年1月17日23:45:29
*/
public class MergeFile{
	/**
	* 程序执行入口
	* 传入...个参数：
	* 最后一个参数 - 合并到的文件绝对路径。
	* 后续实现：
	* 1、创建目的文件多级目录功能
	* 2、增加完整的异常处理
	* 3、通过装饰类或PrintWriter提高执行效率
	*/
	public static void main(String[] args) throws IOException{
		String[] sourFileNames = new String[args.length-1];
		for(int i=0; i<args.length-1; i++){
			sourFileNames[i] = args[i];
		}
		String destFileName = args[args.length-1];
		mergeFile(sourFileNames, destFileName);	
	}
	/**
	* 合并函数。没有进行异常处理
	* @param sourFileNames - 多个待合并文件
	* @param destFileName - 合成的目的文件
	* @return void
	*/
	public static void mergeFile(String[] sourFileNames, String destFileName) throws IOException{
		Vector<FileInputStream> v = new Vector<FileInputStream>();
		for(String sourFileName : sourFileNames){
			v.add(new FileInputStream(sourFileName));
		}

		Enumeration<FileInputStream> en = v.elements();

		SequenceInputStream sis = new SequenceInputStream(en);

		FileOutputStream fos = new FileOutputStream(destFileName);

		byte[] buf = new byte[1024];
		int len = 0;
		while((len=sis.read(buf))!=-1){
			fos.write(buf, 0, len);
		}

		fos.close();
		sis.close();
	}
}

